home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / romentry < prev    next >
Internet Message Format  |  1995-03-31  |  13KB

  1. From comp.sys.hp48 Wed Aug  5 22:16:58 1992
  2. Path: seq!rock!stanford.edu!ames!sun-barr!cs.utexas.edu!rutgers!modus!gear!wolf!p10.f800.n33.z2.fidonet.org!Simone.Rapisarda
  3. From: Simone.Rapisarda@p10.f800.n33.z2.fidonet.org (Simone Rapisarda)
  4. Newsgroups: comp.sys.hp48
  5. Subject: Some new ROM Entry Points to play with
  6. Message-ID: <69010.2A4663FD@wolf.sublink.org>
  7. Date: 22 Jun 92 20:53:55 GMT
  8. Sender: ufgate@wolf.sublink.org (newsout1.26)
  9. Organization: FidoNet node 2:33/800.10 - Italy UUCP Gate, Italy
  10. Lines: 248
  11.  
  12. The following is a list of the interesting ROM entry points (sorted by
  13. increasing address) I encountered on my HP48 rev E during my hackings.
  14. All of them should work on all the five ROM revisions.
  15. Maybe some of them are already documented but many definitions are
  16. better than none...
  17.  
  18. As you can see there's not a great continuity in the following list, this
  19. is easely explained by the fact that these are all the entry points that
  20. were not documented and that I needed for developing my sys-RPL software.
  21.  
  22. When it was possible I've named and documented them using the style of the
  23. similar already-documented entry points. Some of them are PMCs, sorry but
  24. I've forgotten to evidence them. The discovering of the not correctly
  25. documented ROM entry points is left as an exercise to the reader ;).
  26.  
  27. I hope you won't have any problem trying to understand what I've written.
  28.  
  29.  
  30. ****************************DISCLAIMER************************************
  31. If while using these ROM entry points your HP48 turns into a Sharp or
  32. CASIO calculator, or worst, into a Texas Instruments one, please consider
  33. that everyone should have the calculator that himself deserves ;-).
  34. **************************************************************************
  35.  
  36.  
  37.                                                                RAP
  38.  
  39. P.S. I would like to know if this list can be useful to someone. If so I
  40.      will be happy to continue to post this kind of things.
  41.  
  42.  
  43. =============================================================================
  44.  
  45. 0172B   ??? rescan Alarms ???  ( ) -> ( )  (PMC)
  46. 0426A   DoWarning: Invalid Card Data
  47. 04546   WarnSTATUS ( --> # )  (0OK 1Alarm 2LowBat(S) 4LowBat(P1) 8LowBat(P2))
  48. 04577   #>Warn$22 (0=Blank 1=Alarm 2=LowBat(S) 4=LowBat(P1) 8=LowBat(P2))
  49. 047C7   if empbuf then keypr? else drop,F (1:SB)->(1:T/F) (2nib: a1E l23 r28)
  50. 06DDE   ??? newob ???  (PMC)
  51. 077C2   SRRP? (1:SB)  (is that library attached to homedir?)
  52. 081D9   GetBckpId  (1:Backup) -> (2:Global, 1:True)/(1:False)  (PMC)
  53. 081EE   GetLib#  (1:Library) -> (2:Syst Bin, 1:True)/(1:False)
  54. 08E73   Right Name/Number? (2:GlbNm/LclNm/SystBin, 1:Backup/Library)->(T/F)
  55. 08F86   PORTSto  (3:Lib/Backup, 2:SystBin/GlobalName, 1:SystBin(Port#:1,2))
  56. 09269   PORT0STO (2:Lib/Backup, 1:SystBin/GlobalName)
  57. 09287   if PORTSTATUS is ok then PORT@ (2:GlbNm/LclNm/SB(Lib#),1:SB(Port#))
  58. 092E1   PORT0@ (1:GlobalNm/LocalNm/SB(Lib#))->(2:Backup/Lib,1:True)/(1:False)
  59. 09318   OVERPLIB@ (2:GlbNm/LcNm/SB(Lib#),1:SB(Prt#:0,1,2))->(2:Lib,1:T)/(1:F)
  60. 093D1   PORT@ (2:GlbNm/LclNm/SB(Lib#),1:SB(PortAddr))->(2:Bckp/Lib,1:T)/(1:F)
  61. 09408   PORTPu  (2:GlobalName/LocalName/SystBin(Lib#), 1:SystBin(Port#:1,2))
  62. 0948E   BACKUP>  (1:Backup) -> (1:Any(Content))  (PMC)
  63. 09453   PORT0Pu  (1:GlobalName/LocalName/SystBin(Lib#)) (purge backup or lib)
  64. 0AB82   PORTRcl (1:SB(Addr))->(3:Backup/Lib,2:SB(nextAddr),1:True)or(1:False)
  65. 0BD54   OVEREQUALcase  (PMC)
  66. 0D169   TICKS>%REP   Ticks -> Alarm Repeat  (1:Bin Int) -> (1:Real)
  67. 0DEAC   put alarm in alarmlist (2:List-alarms, 1:List-alarm) -> (2:SB,1:List)
  68. 0DECF   STOAlarms (1:List)
  69. 0E461   put alarm in alarmlist (3:list-alarms, 2:List-alarm, 1:SB-alarm#)
  70. 0E475   { M N }  (list of Local Names)
  71. 0E58E   internal STOALARM (3:Real-date,2:Real-time,1:Any-action)
  72. 0E5EF   internal STOALARM (4:Real-date,3:Real-time,2:Any-act,1:Real-rept)
  73. 0E6D4   ABS, IP and assert TOS is a valid repeat factor (1:Real)
  74. 0E6ED   STOALARM (4:Real-date,3:Real-time,2:Any-act,1:Real-rept)
  75. 0E76F   DELALARM (1:Syst Bin)
  76. 0E78D   PuAlarms
  77. 0EABE   get alarm numb (2:List-alarm,1:List-alarms) -> (1:Syst Bin)
  78. 0EBA8   if copy TOS > AlarmsListSIZE then DROP & %0 else UNCOERCE (1:SystBin)
  79. 0EBD5   FINDALARM (1:BI(Ticks)) -> (1:SB(Alrm#:_AlarmsListSIZE+1_ifnotfound))
  80. 0EC07   FindAlarm (2:AlarmsList, 1:BinInt(startTicks)) -> (1:SystBin)
  81. 0EE26   Add timetick to datetick (2:BI-datetick, 1:BI-timetick)
  82. 0EED0   alarm repeat -> Binary Integer  (1:Real)
  83. 0EEDF   deep int alarm repeat -> Binary Integer (2:BinInt0(lenghtAh), 1:Real)
  84. 0EF45   do intalarm (4:Any-act,3:Real-date,2:Real-time,1:Real-rept)->(1:List)
  85. 0EF72   add alarm repeat to datetimetick (3:BI0(len18h),2:Real,1:BI-dttick)
  86. 113F2   # of the first line of the cmdline displayed -> (1:Syst Bin \>= 1)
  87. 11402   add one to the command-line lines counter
  88. 11412   subtract one from the command-line lines counter
  89. 130CA   RSZABUFF  (Resize ABUFF to the standard size: 131 wide by 56 high)
  90. 13695   REDISPABUFF  (redisplay ABUFF so that #0#0 is the upper-left pixel)
  91. 13F47   position (line) of the cursor in the command-line -> (1:SystBin >= 1)
  92. 15B13   ->STR (1:Any(if GlobalName/LocalName then cut away name delimiters))
  93. 18536   DUP@_HERE  (1:Global Name)
  94. 19350   DUPInRAM?  (1:Any) -> (2:Any1, 1:True/False)
  95. 1A20B   BYTES (1:Any) -> (2:#0h, 1:2.5)    ;-)
  96. 1A23D   BYTES (1:Any(RAMobject)) -> (2:Binary Integer, 1:Real)
  97. 1CA0D   DROP%1  (drop and push %1)  (1:Any) -> (1:1)
  98. 1CDB1   XEQTYPEARRY
  99. 1CDD4   TYPESEC  ( 8, 18, or 19 )
  100. 1D8A2   deep Internal GET (2:List,1:Real/List)
  101. 1F960   { ''num' }  (List of one Local Name)
  102. 21176   TMENU (1:List/Global_Name/Local_Name)
  103. 215A1   PORTSTO (3:Lib/Bckp/Any,2:SB/GlbNm,1:SB(Port#:0,1,2))
  104. 215D9   DUPGetPobjId  (1:Backup/Lib) -> (2:Backup/Lib,1:GlobalName/SystBin)
  105. 215E8   GetLIB#  (1:Library) -> (1:Syst Bin)
  106. 21624   >BACKUPT  (2:GlobalName/LocalName, 1:Any) -> (2:Backup, 1:True)
  107. 21674   >BACKUP  (2:GlobalName/LocalName, 1:Any) -> (1:Backup)
  108. 216D8   COMP>BACKUP  (1:{ GlbNm/LclNm+2nib Any Any5nib }) -> (1:Backup) (PMC)
  109. 217A9   :: :: RSWAP 'R RDROP ; 'R :: RSWAP 'R DROP RSWAP ; COLA_EVAL ;
  110. 21C88   NSRRP?TOSRRP (1:SB)  (if not yet attached then attach to homedir)
  111. 21D5E   rcl info ($Name %Id #Addr) on libs attached (1: Directory)
  112. 21DB0   PORTStatus ( #Port --> #StartAddr #EndAddr Present_And_Not_Merged? )
  113. 23879   { ''ioinprogress' }  (List of one Local Name)
  114. 23903   { 'st' 'ofs' 'tok' }  (List of three Local Names)
  115. 2530E   ZERO5UNROLL
  116. 25D3A   Counted Binary Integer  (Lenght=100h) (used by the string parser)
  117. 269BD   ??? is TOS an XLIB with LID > #700h? (1:Any) -> (1:True/False) ???
  118. 269E7   HARDROMP?  (is TOS in built-in ROM?) (1:XLIB Name) -> (1:True/False)
  119. 26A2D   DUPROM-FNCT?  (is TOS a built-in Function?) (1:Any) -> (1:True/False)
  120. 2856C   OVEREQUALcasedrop
  121. 28585   DROPCOLACOLA
  122. 2AFAC   RND0 (1:Real)
  123. 386A1   Update All Display Areas now if no key is in the buffer
  124. 386D8   STATUSWarning  (Display a Warning if Alarm or Lowbat)
  125. 386EC   FOURTEEN#AND
  126. 39072   SetDA3Temp
  127. 39086   if CmdLine then Setbit 2@7068A else Setbit 4@7068D   (FREEZEstack)
  128. 390CC   ClrDA1OK
  129. 390E5   ClrDA2Bad
  130. 39117   ClrDA2OK
  131. 391B2   SetDA23NoCh
  132. 391C6   SetDA13NoCh
  133. 3919E   SetDA12NoCh
  134. 391EE   SetDAsNoCh
  135. 39207   SetDA2Temp
  136. 39283   SetDA1ValidF
  137. 393D3   SetDA1NoCh
  138. 393E1   ClrDA1Ch
  139. 3940B   ClrDA2aCh
  140. 39435   ClrDA2bCh
  141. 3945F   ClrDA3Ch
  142. 3959C   KEYINBUFF?DA1!  (Update Status Area now if no key is in the buffer)
  143. 395BA   DispStatus
  144. 39B85   KEYINBUFF?DA2!  (Update Stack Area now if no key is in the buffer)
  145. 39BAD   DispStack
  146. 3A1CA   KEYINBUFF?DA3!  (Update Menu Area now if no key is in the buffer)
  147. 3A7D5   EDITMENU  (show edit menu)
  148. 3A87A   CURSOR>LEFT  (move cursor in command line)
  149. 3A924   CURSOR>RIGHT  (move cursor in command line)
  150. 3A974   CURSOR>UP  (move cursor in command line)
  151. 3AF73   smart VISIT (as key assignment)
  152. 3AF7D   SmartVISIT
  153. 3B036   set alpha mode
  154. 3B095   enter Program-Entry Mode and start command line
  155. 3B12B   DumbVISIT
  156. 3ECD0   build menulblgrb from next str add square if nextnext sysflag is clr
  157. 3ECEE   build menulblgrb from next str add square if nextnext sysflag is set
  158. 3ED6B   build dirlike-menulblgrb from next string
  159. 3EDA2   toggle system flag (1:Syst Bin)
  160. 3EE1A   PRG?Keycase (If Prg-Entry Mode then DoNextKey&Ret else SkipNext&Cont)
  161. 3EE47   Ins in cmdln: LF nextnextitem SPC LF nextitem SPC, mv curs to last LF
  162. 3FE44   if <80h>, <40h> or <C0h> then <1Eh>, <23h> or <28h> (1:SB(Key))
  163. 3FF75   STDKeys?  (are unassigned keys activated? -> True/False)
  164. 3FF86   SetSTDKeys  (activate unassigned keys)
  165. 3FF97   ClrSTDKeys  (deactivate unassigned keys)
  166. 40454   check TOS type and behave as TOS is assigned to a key/mnlbl (1:Any)
  167. 404A9   behave as TOS is assigned to a key/menulbl (1:String)
  168. 404BD   behave as TOS is assigned to a key/menulbl (1:Unit)
  169. 404E5   behave as TOS is assigned to a key/menulbl (1:Program/Command)
  170. 4051C   behave as TOS is assigned to a key/menulbl (1:XLIB Name)
  171. 4053F   Funct? ins in cmdline w/ ALGsyntax else PRG?->EVALorINS (1:Cmd/Funct)
  172. 405BC   behave as TOS is assigned to a key/menulbl (1:Algebraic)
  173. 405F3   behave as TOS is assigned to a key/menulbl (1:Any)
  174. 40625   >CmdLineSep  (insert TOS in cmdline between two blanks (1:Any))
  175. 407FB   TakeOver'
  176. 4085A   EQWTakeOver  (:: :: ; ;  a prog containing a null prog)
  177. 408C3   ->STR (1:Global name/Local name/Any)
  178. 40A6F   StoExec1Name (store name of current prg (1:Cmd/Funct/GlbNm/XLIBNm))
  179. 40A82   @Exec1Name  (rcl name of current prg -> (1:Cmd/Funct/GlbNm/XLIBNm))
  180. 40A9A   ClrExec1Name  (clear name of current program)
  181. 40AA8   Exec1Named?  (Is the current program unnamed? -> (True/False))
  182. 40BB5   ENTER (need command line)
  183. 40D4D   ToggleUSER  (toggle the user keyboard flag (-62))
  184. 40D61   Set1USR  (activate the user keyboard for one keypress)
  185. 40D93   NoCMDLINEcase  (if no cmd-line then DoNext&Ret else SkipNext&Cont)
  186. 40DC0   InitMenu & SetDA12NoCh
  187. 40DD4   Insert next item (character) in cmdline
  188. 40DF7   Insert next item (string w/o LF) in cmdline, move cursor left one pos
  189. 41A14   RCL current dir
  190. 41DB5   ZEROSIX
  191. 41E00   #1+ROTDROP
  192. 41E78   ASN (3:Any, 2:Syst Bin, 1:Syst Bin)
  193. 41E8C   DUP49{}N  (DUP 48 times and 49 \->LIST (1:Any))
  194. 41ECD   DUP6{}N  (DUP 5 times and 6 \->LIST (1:Any))
  195. 41F13   0DELKEYS
  196. 42023   TRUE1PUTLAM  (store True in last local(preexisting))
  197. 420A0   keywait -> (2:Syst Bin,1:True)ifKey or (2:False,1:False)ifAlrm/AutOff
  198. 42159   keywait -> (2:Syst Bin,1:True)ifKey or (1:False)ifattn/Alrm/AutoOff
  199. 4256B   CURSOR>LEFT  (move cursor in command line)
  200. 426F1   CMDLINEBOTTOM?  (is the cursor in the last line of the cmdline?)
  201. 4272D   CMDLINETOP?  (is the cursor in the first line of the cmdline?)
  202. 42AE4   behave as TOS is assigned to a key/menulbl (1:Character)
  203. 42BD4   behave as TOS is assgn. to a key/menulbl (DA1 Not Freezed) (1:String)
  204. 42BFC   CKEditStr  (if string contains char #0 then doerr #102h (1:String))
  205. 42C5B   DUP, #1, SB(firstLFpos(0ifnoLF), True(ifnoLF)/False(ifLF) (1:String)
  206. 42C74   2DUPNEWLINEPOS  (2:String, 1:Syst Bin(LFoccurrence))
  207. 42C92   behave as TOS is assgn. to a key/mnlbl (1:String w/ LF)
  208. 42CE2   behave as TOS is assgn. to a key/mnlbl (1:String w/o LF)
  209. 42D32   DumbEDIT
  210. 42D46   SmartEDIT
  211. 42D82   dumb EDIT (1:Any) -> (2:Any,1:True) if [ENTER] or (1:False) if [ATTN]
  212. 42DFF   %DumbVISIT  (1:Real)
  213. 42E13   %SmartVISIT  (1:Real)
  214. 42E5E   IDLAMDumbVISIT  (1:Global Name/Local Name)
  215. 42E72   IDLAMSmartVISIT  (1:Global Name/Local Name)
  216. 42E86   SAFE@_HERE, 'REVAL (this must exit with 1:T/F) and if True STO back
  217. 4365D   IntSTACK  (enter the Interactive Stack)
  218. 444C3   insert TOS in cmdline (1:String w/o LF)
  219. 44730   CMDLINELines  (command-line lines counter -> (1:Syst Bin \>= 0))
  220. 4488A   NOCMDLINE?
  221. 44C31   MatrixWriter  (enter the Matrix Writer with no matrix in it)
  222. 44FE7   >MatrixWriter  (1:Array) -> (2:Array,1:T)if[ENTER] or (1:F)if[ATTN])
  223. 53A4A   CMDLINE?
  224. 53AD6   IgnoreAlm
  225. 5E4BD   #1-get1  (<1h> - DUP <2h> + ROLL)
  226. 5F0CD   TYPEIDLAMcase (if pop TOS=GlobalNm/LocalNm then do&ret else skip&cnt)
  227. 62A61   >ROMPTR  (1:Any)
  228. 62A84   SAFEROMP@  (if XLIB resides in built-inROM(notHidden) then @ (1:Any))
  229. 6381C   ITEcase  (if True then DoSkipRet else SkipDoRet)
  230. 63880   :: RSWAP 'R DROP RSWAP ; (pop next item in prevprev instr stream)
  231. 639DE   :: RSWAP 'R 'R RSWAP ; (push next two items in prevprev instr stream)
  232. 639FC   :: RSWAP 'R RDROP ; (push next item in PrevPrevInstrStream & kill it)
  233. 63AEC   NOTcaseDROPFALSE (if false then drop, false & return else continue)
  234. 63DCB   IMMcase  (if Immediate Entry-Mode then DoNext&ret else SkipNext&cont)
  235. 68B7B   EqWriter  (enter the Equation Writer with no equation in it)
  236. 68BDA   >EqWriter  (1:Alg/Unit) -> (2:Alg/Unit,1:T)if[ENTER] or (1:F)if[ATTN]
  237.  
  238.  
  239. In the hidden ROM:
  240.  
  241. 7FE06   XLIB 240 109  PORTPurge (2:GlbNm/LclNm/SB(Lib#),1:SB(Port#:-1,0,1,2))
  242.                       The ROM address 7FE06 is valid only for ROM revision E
  243. 7FE48   XLIB 240 110  PORTPu (1:GlbNm/LclNm/SB(Lib#)) (look in every Port)
  244.  
  245.  
  246. The following two PMC should work on the Return Stack but I've not
  247. investigated:
  248.  
  249. 14EA5
  250. 61897
  251.  
  252.  
  253. =============================================================================
  254.  
  255. --  
  256.  WolfNet BBS Pisa (Italy) Tel. +39-50-589050 300-14.4K Baud Matrix 2:332/602.0
  257.  Simone Rapisarda - via FidoNet node 2:33/800
  258.  UUCP: ...!gear!wolf!800.10!Simone.Rapisarda
  259.  ARPA: Simone.Rapisarda@p10.f800.n33.z2.fidonet.org
  260.  
  261.